//
//  ContactsViewController.m
//  tabbar-test
//
//  Created by Arcticsun on 11-6-10.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "ContactsViewController.h"


@implementation ContactsViewController
@synthesize Left, Right;
@synthesize leftAry,rightAry;
@synthesize nametext,newGroupName;
//@synthesize addressBook_;
#pragma mark -
#pragma mark buttons
-(IBAction) addGroup:(id)sender{
	UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Group Name" message:@"\n\n" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Cancel",nil];
	nametext = [[UITextField alloc] initWithFrame:CGRectMake(45, 60, 200, 30)];
	[nametext setBorderStyle:UITextBorderStyleRoundedRect];
	[nametext setBackgroundColor:[UIColor clearColor]];
	[nametext setTextAlignment:UITextAlignmentCenter];
	[nametext setReturnKeyType:UIReturnKeyDone];
	nametext.delegate = self;
	[alert insertSubview:nametext atIndex:0];
	[nametext becomeFirstResponder];
	//[nametext release];
	[alert show];
	[alert release];
	
}
#pragma mark Text Field

#pragma mark AlertView
-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
//	UITextField *gtext = [alertView.subviews objectAtIndex:0];
//	[gtext.delegate textFieldDidEndEditing:gtext]; 
	//newGroupName = [NSString stringWithString:self.nametext.text];
	self.newGroupName = [nametext.text retain];
	//NSString *newnameg = [NSString stringWithString:self.newGroupName];
	NSLog(@"%@", newGroupName);
	CFErrorRef err = NULL;
	NSLog(@"Error:%@", err);
//	ABAddressBookRef address = ABAddressBookCreate();
//	ABRecordRef person1 = ABAddressBookGetPersonWithRecordID(address, 1);
//	ABRecordRef group = ABGroupCreateInSource(NULL);
//	ABRecordSetValue(group, kABGroupNameProperty, self.newGroupName, &err);
//	ABAddressBookAddRecord(address, group, &err);
//	ABGroupAddMember(group, person1, &err);
//	ABAddressBookSave(address, &err);
	//test
	NSNumber *gid = [AddressBook_ AddGroupWithName:address Name:self.newGroupName];
	NSLog(@"%d", ABAddressBookGetGroupCount(address));
//	NSNumber *gid = [NSNumber numberWithInt:ABRecordGetRecordID(group)];
	[leftAry addObject:gid];
//	CFRelease(address);
	[self.Left reloadData];
}
#pragma mark -
#pragma mark View lifecycle


- (void)viewDidLoad {
    [super viewDidLoad];
	rightAry = [[NSMutableArray alloc] init];
	leftAry = [[NSMutableArray alloc] init];
	address = ABAddressBookCreate();
	ABAddressBookRef addressBook = ABAddressBookCreate();
	
	NSArray* people = (NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
	//NSString *name = [[NSString alloc] init];
	for (id one in people) {
		NSString *name = (NSString*)ABRecordCopyCompositeName(one);
		if (name != nil) {
			[rightAry addObject:name];
		}else {
			[rightAry addObject:@""];
		}
		[name release];

	}
	[people release];
	NSLog(@"%@", rightAry);

	NSArray *group = (NSArray*)ABAddressBookCopyArrayOfAllGroups(addressBook);
	for (id one in group) {
		//NSString *gname = (NSString*)ABRecordCopyValue(one, kABGroupNameProperty);
		NSNumber *gname = [NSNumber numberWithInt:ABRecordGetRecordID(one)];
		if (gname != nil) {
			[leftAry addObject:gname];
			NSLog(@"%d",ABRecordGetRecordID(one));
		}else {
			[leftAry addObject:@""];
		}
		//[gname release];
	}
	NSLog(@"groups:%@",leftAry);
	//leftAry = [[NSArray alloc] initWithObjects:@"L1",@"L2",@"L3",nil];
	[group release];
	CFRelease(addressBook);
//	rightAry = [[NSArray alloc] initWithObjects:@"R1",@"R2",@"R3",@"R4",nil];
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}


/*
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
}
*/
/*
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
}
*/
/*
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
}
*/
/*
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
}
*/
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/


#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
	if (tableView.tag == 1) {
		NSLog(@"group number:%d",ABAddressBookGetGroupCount(address));
		return ABAddressBookGetGroupCount(address);
		//return [leftAry count];
	}
	return ABAddressBookGetPersonCount(address);
    //return [rightAry count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    // Configure the cell...
	if (tableView.tag == 1) {
		cell.textLabel.text = [NSString stringWithFormat:@"%@",[leftAry objectAtIndex:indexPath.row]];
	}else {
		cell.textLabel.text = [rightAry objectAtIndex:indexPath.row];
	}

    
    return cell;
}


/**/
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the specified item to be editable.
    return YES;
}



/**/
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
//		NSNumber *gid = [leftAry objectAtIndex:indexPath.row];
//		CFErrorRef err = NULL;
////		ABAddressBookRef address = ABAddressBookCreate();
//		NSLog(@"gid=%@",gid);
//		ABRecordRef group = ABAddressBookGetGroupWithRecordID(address, [gid intValue]);
//		ABAddressBookRemoveRecord(address, group, &err);
//		NSLog(@"%@",err);
//		ABAddressBookSave(address, &err);
//		NSLog(@"%@",err);
		[AddressBook_ DelGroupByID:address ID:[leftAry objectAtIndex:indexPath.row]];
		//		CFRelease(address);
		[leftAry removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}



/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
}
*/


/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}
*/


#pragma mark -
#pragma mark Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Navigation logic may go here. Create and push another view controller.
	/*
	 <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
	 [self.navigationController pushViewController:detailViewController animated:YES];
	 [detailViewController release];
	 */
}


#pragma mark -
#pragma mark Memory management

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Relinquish ownership any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
    // For example: self.myOutlet = nil;
}


- (void)dealloc {
	[leftAry release];
	[rightAry release];
	[Left release];
	[Right release];
    [super dealloc];
}


@end

